| ..:: Menu ::.. | ..:: Lekcja 4: Podstawy Object Pascala część: 5 ::.. | ..::Info i Reklamy::.. |
|
Strona Główna Kursy DELPHI Kursy C++ Linki Forum Download Seriale Humor Reklama O autorze |
RzutowanieW poleceniu MessageBox trzeba podawać kilka parametrów. W przypadku drugiego i trzeciego parametru ma być to tekst, który zostanie wyświetlony w okienku. Ten tekst musi być typu PChar. Możesz więc napisać tak i będzie dobrze:var Tekst, Tytul : PChar; begin Tekst := 'Delphi jest fajne!'; Tytul := 'Nie wiem?'; MessageBox(0, Tekst, Tytul, MB_OK); end. Tak, będzie dobrze. Dlaczego? Bo zmienne Tekst oraz Tytul są typu PChar. Teraz zamiast typu PChar napisz String: var Tekst, Tytul : String; begin Tekst := 'Delphi jest fajne!'; Tytul := 'Nie wiem?'; MessageBox(0, Tekst, Tytul, MB_OK); end. Takie coś już nie przejdzie. Kompilator wyświetli błąd: [Error] Project1.dpr(21): Incompatible types: 'String' and 'PChar'. Kompilator próbuje Ci powiedzieć: "Co Ty wyprawiasz! Przecież typy PChar i typ String to dwie różne rzeczy!". Częściowo ma racje, ale to tylko głupia maszyna i da się ją oszukać. Do tego właśnie służy rzutowanie. Polega to na oszukaniu kompilatora. On "myśli", że jest to typ PChar, a ty stosujesz typ String: var Tekst, Tytul : String; begin Tekst := 'Delphi jest fajne!'; Tytul := 'Nie wiem?'; MessageBox(0, PChar(Tekst), PChar(Tytul), MB_OK); end. Jest to rzutowanie typu String na typ PChar. Kompilacja się powiedzie i wszystko będzie dobrze. Fajnie, nie? Ale takie coś przejdzie tylko do czasu. Bo takie coś już nie wyjdzie: var Licznik : Integer; begin Licznik := 1; MessageBox(0, PChar(Licznik), '', MB_OK); end. Fachowca by powiedział: "To oczywiste. Przecież typy Integer i PChar zapisane są w odrębnych komórkach pamięci i bleblelble". Ktoś jednak pomyślał i stworzył: KonwersjaKonwersja polega na wykorzystaniu gotowych poleceń do zmiany typów. Jeżeli np. typ Integer chcesz przedstawić w postaci tekstu ( String ) stosujesz polecenie IntToStr. Zaraz przetestujemy to w praktyce. Żeby użyć tego polecenia do listu modułów uses musisz dodać moduł SysUtils. Gotowe? A, wiesz co? Dodaj jeszcze moduł Dialogs. Powinno to wyglądać tak:uses Windows, SysUtils, { <-- ten moduł jest konieczny, aby zastosować konwersje } Dialogs; { <-- ten zawiera jedno polecenie - ShowMessage } Moduł Dialogs zawiera polecenie ShowMessage, którego będziemy używali. Jak łatwo się domyśleć polecenie to wyświetla w oknie tekst ( to taka odmiana polecenia MessageBox ). Wpisz taki tekst do programu ( komentarze możesz oczywiście pominąć ): var Data : TDateTime; { nowy typ - przechowuje datę } Rozdzial : Integer; { znany już typ Integer } Imie : String; { również znany typ String } begin Data := Now; { przypisuje zmiennej aktualną datę } Rozdzial := 4; Imie := 'Komputer'; ShowMessage('Cześć, mam na imię ' + Imie + ', a Ty właśnie czytasz ' + IntToStr(Rozdzial) + ' rozdział kursu Delphi! Dzisiaj jest: ' + DateToStr(Data)); end. Hohhoho. To coś trudniejszego, ale jakże przydatne w programowaniu. Zacznijmy od początku. Polecenie ShowMessage ma tylko jeden parametr - jest nim tekst, który ma być wyświetlony w okienku. Tekst ten ma być typu String. Operator + służy do połączenia odpowiednich części ( zmiennych ). Po prostu gdy chcesz w dane miejsce wstawić wartość zmiennej to kończysz tekst stawiając apostrof, następnie znak + mówiący o podłączeniu zmiennej. Później wpisujesz zmienną, która ma być w to miejsce wstawiona. W powyższym wypadku jeżeli będziesz chciał wstawić zmienną, która nie jest typu String trzeba będzie zastosować konwersje. Program możesz uruchomić i sprawdzić jak działa. Oto inne polecenia konwertujące typy: IntToStr - konwertuje zmienna "Integer" na "String" StrToInt - "String" na "Integer" StrPas - "PChar" na "String" StrPCopy - "String" na "PChar" TimeToStr - zmienna "Time" na "String" DateToStr - zmienna "Date" na "String" StrToDate - "String" na "Date" StrToTime - "String" na "Time" CurrToStr - "Currency" ( zmiennoprzecinkowy ) na "String" StrToCurr - "String" na "Currency" FloatToStr - zmiennoprzecinkowy na "String" <--- Wstecz | Dalej ---> |
Reklama To miejsce czeka na twoją reklame. Więcej informacji w dziale Reklama |